Master pages

ASP.NET master pages allow you to create a consistent layout for the pages in your application. A single master page defines the look and feel and standard behavior that you want for all of the pages (or a group of pages) in your application. You can then create individual content pages that contain the content you want to display. When users request the content pages, they merge with the master page to produce output that combines the layout of the master page with the content from the content page.

Master pages i Content Studio

Skapa master page:

  1. Skapa dokument av typen html med metadata.
  2. Infoga en eller flera instanser av serverkontrollen ContentPlaceHolder (finns i verktygslådan under Visa -> Standardverktygslåda) på de ställen som ska vara redigeringsbara i dokument som använder master pagen.
  3. Spara och ange som filändelsen .master.

Master page fil ställs in i dokumentdirektiv på sajt, enhet, kategori eller dokumentnivå. Ange sökväg i MasterPageFile.

 

Vanligast är förmodligen att man anger master page på en kategori.

För att använder master pages:

  1. Skapa nytt dokument av typen html utan meta data i kategorin som har den applicerade master pagen.
  2. Det är nu endast möjligt att redigera dokumentet i de ContentPlaceHolder:s som skapades i master page-filen.
  3. Spara dokumentet.

Följande exempel visar man kan byta master page i ett dokument. MasterPageFile anger sökvägen till master page. OBS, detta måste göras i PreInit eventet och att den nya master pagen måste ha matchande ContentPlaceHolders.

C#
protected void Page_PreInit(object sender, EventArgs e )
{ 
    Page.MasterPageFile = "Moduler/Master/437BE840-5D90-432D-89FC-8E9D34F84E67.master"; 
}
VB
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As EventArgs) 
   Page.MasterPageFile = "Moduler/Master/437BE840-5D90-432D-89FC-8E9D34F84E67.master";
End Sub

More about master pages:

ASP.NET Master Pages Overview

Web parts

Web Parts ökar användarinteraktionen på webbsidor genom att låta användarna själva lägga till, ta bort eller ändra innehållet. Man kan säga att Web Parts gör det möjligt att personalisera innehållet. I och med version 5.0 av Content Studio 5 finns möjlighet att enkelt implementera detta på en webbplats eller ett intranät.

Introduktion till Web Parts

En av nyheterna i ASP.NET 2.0 var möjligheten att använda Web Parts, något som nu även finns i Content Studio. En Web Part kan antingen utgå från en Web Control eller en User ontrol. För att en Web Part ska  fungera med personalisering krävs det en så kallad Web Part Manager samt en eller flera Web Part Zones. Om en befintlig kontroll placeras i en Web Part Zone får kontrolen automatiskt de egenskaper som krävs för att användaren skall kunna interagera med den. En Web Part kan exportera och importeras till/från Content Studio. När en Web Part exporteras genereras en XML-fil med dess inställningar. Filen kan sparas lokalt datorn, exempelvis på skrivbortet. Därefter kan Web Parten distribueras, inklusive alla inställningar, genom att till exempel dela ut filen på en nätverksenhet, på eb webbplats eller genom att sända filen per e-post. För att importera Web Parten på en annan webbsida krävs att eventuella dll:er alternativt ascx-filer som används av Web Parten finns installerade på den servern där Web Parten importeras.

Använda en befintlig kontroll som Web Part

En befintlig Web Control eller UserControl kan användas som en Web Part utan några förändringar i kontrollerna. Det är dock möjligt att komplettera kontrollen med egenskaper som göra att användaren i en sk.  EditorZone kan ändra specifika properties i en Web Part.  En Web Part som exempelvis visar ett RSS-flöde kan kompletteras med två publika egenskaper som bestämmer vilken RSS som skall visas samt, hur många poster som skall hämtas. För att kunna låta användaren ändra dessa inställningar räcker det med att sätta ett Personalizable-attributet på egenskapen.

Exportera en Web Part från Content Studio

För att exportera en Web Part från Content Studio måste kontrollen ExportWebPart ingå. Denna kontroll listar alla Web Parts på sidan och användaren kan genom ett knapptryck exportera Web Parten samt dess inställningar till en WebPart-fil. Den exporterade filen kan därefter importeras till vilken ASP.NET-sida som helst (inklusive Content Studio 5.0 samt Microsoft Sharepoint Portal Server 2007) förutsatt att alla eventuella dll:er och inställningar finns på servern som importerar web parten.

Importera en Web Part från Content Studio

Det finns två olika sätt att importera Web Parts på i Content Studio. Det är möjligt ladda upp en WebPart-fil direkt i en ImportCatalogPart-kontroll som sedan användaren kan lägga in i valfri WebPartZone, men det finns även en användarkontroll med i Content Studio som administratören kan infoga i sidan för att lista upp alla potentiella Web Parts i en utav administratören bestämd kategori. När den visas för användaren så dyker en lista på alla Web Parts upp där det genom att klicka på en länk är möjligt att direkt på sidan infoga Web Parts.

Web Parts Providern

Content Studio använder sig utav en anpassad provider för Web Parts som lagrar all användarspecifik information i Content Studio UserProperties. UserProperties är information kopplad till den inloggade användaren och är alltså privat och personlig information som inte delas med andra användare. UserProperties finns endast tillgängliga för authentiserade användare varför de inte kan användas för en publik webbplats där anonym access är aktiverad. Den provider som ingår i Content Studio används för att lagra de inställningar som användaren gör - vilka Web Part som skall visas, var och dess inställningar.

Det är möjligt att skriva en egen provider genom att ärva från klassen WebPartsProvider och därefter köra override på metoderna. På så sätt kan man lagra den personliga informationen på andra sätt än via den medförljande providern som alltså lagrar uppgifterna i Content Studio.

För att byta till en annan provider finns det en sektion i web.config där det anges vilken provider som skall användas.

Skapa en ny Web Part i Content Studio

För att skapa en Web Part direkt i Content Studio utgår man enklast från att skapa en ny cs- eller vb-fil som ärver från WebPart-klassen. Den fungerar som en vanlig Web Control när det gäller rendering av html/xhtml. För att konsumera den på den egna sidan räcker det med att lägga filen i kategorin app_code, men för att exportera den tillsammans med eventuella andra Web Parts så bör den kompileras till en dll. Detta kan ske direkt i Content Studio genom att högerklicka på en eller flera kodfiler och välja att kompilera dem. Sidan där Web Partsen skall kunna importeras måste ha denna dll i antingen GAC:n eller i bin-mappen. Därefter går kan användare gå in på sidan och välja att importera WebPart-filen via kontrollen ImportCatalogPart. Samma Web Part kan importeras ett flertal gånger och på olika sidor i webbplatsen.

Begränsningar

För att en Web Part skall kunna skickas/konsumeras mellan olika webbplatser så krävs det att sidan där Web Parten importeras har alla nödvändiga filer och server-inställningar. Om Web Parten exempelvis anropar Content Studio databasen för att hämta information så web parten delas mellan olika siter på samma Content Studio installation. För att göra Web Parten dynamisk måste den anropa en extern datakälla som till exempel ett RSS-flöde eller en Web Service. Det går alltså inte att skapa en statisk web part, exportera den till en annan sida och sedan få den uppdaterad om den uppdateras på sidan den skapades på. Den har alltså samma begränsningar som en vanlig User Control eller Web Control som exporteras till en annan webbplats.

Mer info

MSDN - ASP.NET Web Parts Pages

Themes and skins

A theme is a collection of property settings that allow you to define the look of pages and controls, and then apply the look consistently across pages in a Web application, across an entire Web application, or across all Web applications on a server.

Themes

Themes are made up of a set of elements: skins, cascading style sheets (CSS), images, and other resources. At a minimum, a theme will contain skins. Themes are defined in the App_Theme folder with each theme having its own folder. The theme gets its name from the name of the category.

Skins

A skin file has the file name extension .skin and contains property settings for individual controls such as Button, Label, TextBox, or Calendar controls. Control skin settings are like the control markup itself, but contain only the properties you want to set as part of the theme. For example, the following is a control skin for a Button control:

Html
<asp:button runat="server" ForeColor="Green" Width="100" ></asp:Button>

Applying themes

Themes may be applayed per document, category, unit and site using document directives. Or in web.config or machine.config for all web sites on a server using pages Element (ASP.NET Settings Schema).

Xml
<system.web>
	<pages StyleSheetTheme="Theme1" />
</system.web>

Themes and Stylesheet themes

If you set a page's Theme property, control settings in the theme and the page are merged to form the final settings for the control. If a control setting is defined in both the control and the theme, the control settings from the theme override any page settings on the control. This strategy enables the theme to create a consistent look across pages, even if controls on the pages already have individual property settings. For example, it allows you to apply a theme to a page you created in an earlier version of ASP.NET.

Alternatively, you can apply a theme as a style sheet theme by setting the page's StyleSheetTheme property. In this case, local page settings take precedence over those defined in the theme when the setting is defined in both places. This is the model used by cascading style sheets. You might apply a theme as a style sheet theme if you want to be able to set the properties of individual controls on the page while still applying a theme for an overall look.

Themes in Content Studio

Themes work in the same manner in Content Studio.

Adding a theme:

  1. Navigate to System/App_Theme (Create category App_Theme if it does not exist).
  2. Create new category of type text without metadata. The name of the category will be the name of the theme.
  3. Add resources to this category: Css, images, skins etc.

Using themes:

  1. Add directive to web.config (see above), or add document directive on site, unit, category or page. Set the styleSheetTheme or Theme setting.

More about themes:
ASP.NET Themes And Skins Overview